package xianchenglock;

import java.util.concurrent.TimeUnit;

/**
 * @功能
 * @创建时间 2019/12/18
 * volatile 线程可见性，如下，去掉后e ed不执行，加了之后档某个线程修改了这个值，会通知其他所有线程，然后其他线程缓冲区会重新从主内存取值
 * 能用volatile就不要sy（加锁），性能更好
 */
public class P {
    volatile boolean running = true;
    void m(){
        System.out.println("m start");
        while (running){
/*            try {  //线程可能会空一下，然后去主内存取值
                TimeUnit.MICROSECONDS.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }*/

        }
        System.out.println("m end");
    }

    public static void main(String[] args) {
        P t = new P();
        new Thread(t::m,"t1").start();
        try{
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        t.running = false;
    }
}
